//新建目录
const fs = require('fs');
const path = require('path');

exports.mkdir = function (pathname, callback) {
  //判断是否为绝对路径，避免不必要的bug
  pathname = path.isAbsolute(pathname) ? pathname : path.join(__dirname, pathname);
  //获取相对路径
  pathname = path.relative(__dirname, pathname);
  //   windows 系统下的例子
  // 'foo\\bar\\baz'.split(path.sep)
  //  returns
  // ['foo', 'bar', 'baz']
  let floders = pathname.split(path.sep);//避免平台差异带来的bug
  let pre = '';
  floders.forEach(floder => {
    try {
      // 首先判断文件夹是否存在
      //没有异常，文件夹已创建，提示用户文件夹已存在
      //判断文件状态
      let _stat = fs.statSync(path.join(__dirname,pre,floder));
      let hashMkdir = _stat && _stat.isDirectory();
      if(hashMkdir){
        //console.log(path.join(__dirname,pre,floder));
        callback("Directory is already exists!");//调用回调函数，提示文件夹已经存在
      }
    }catch(err){
      //抛出异常，文件不存在
      try{
        //避免文件创建乱序（子文件夹先于父文件夹），采用同步创建文件夹
        fs.mkdirSync(path.join(__dirname,pre,floder));
        callback() && callback(null);
      }catch(err){
        //文件创建失败
        callback && callback(err);
      }
    }
    pre = path.join(pre,floder);//路径合并
  });
}
